// 项目所有公共方法
export default {  
    data() {  
      return {
      };  
    },  
    methods: {
        /**
         * 精确的加法
         * @param {number} a 第一个小数
         * @param {number} b 第二个小数
         * @param {number} precision 小数的精度（保留几位小数，默认为2位）
         * @returns {number} 计算结果，保留指定的精度
         */
        add(a, b, precision = 2) {
            const factor = Math.pow(10, precision);
            const result = (a * factor + b * factor) / factor;
            return Number(result.toFixed(precision));
        },
        
        /**
         * 精确的减法
         * @param {number} a 第一个小数
         * @param {number} b 第二个小数
         * @param {number} precision 小数的精度（保留几位小数，默认为2位）
         * @returns {number} 计算结果，保留指定的精度
         */
        subtract(a, b, precision = 2) {
            const factor = Math.pow(10, precision);
            const result = (a * factor - b * factor) / factor;
            return Number(result.toFixed(precision));
        },
        
        /**
         * 精确的乘法
         * @param {number} a 第一个小数
         * @param {number} b 第二个小数
         * @param {number} precision 小数的精度（保留几位小数，默认为2位）
         * @returns {number} 计算结果，保留指定的精度
         */
        multiply(a, b, precision = 2) {
            const factor = Math.pow(10, precision);
            const result = (a * factor) * (b * factor) / Math.pow(10, 2 * precision);
            return Number(result.toFixed(precision));
        },
        
        /**
         * 精确的除法
         * @param {number} a 第一个小数
         * @param {number} b 第二个小数
         * @param {number} precision 小数的精度（保留几位小数，默认为2位）
         * @returns {number} 计算结果，保留指定的精度
         */
        divide(a, b, precision = 4) {
            if (b === 0) {
                throw new Error("除数不能为0");
            }
            const factor = Math.pow(10, precision);
            const result = (a * factor) / (b * factor);
            return Number(result.toFixed(precision));
        }
    },
    mounted() {
    },  
  };
